package com.zhike.utils;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * @Author: zhike
 * @CreateTime: 2024/1/29 10:50
 * @Description:  查询redis的工具类
 */
public class JedisUtils {
    private static JedisPool jedisPool;

    private static void initJedisPool() {
        // 创建Jedis连接池配置对象
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        // 设置最大连接数为100
        poolConfig.setMaxTotal(100);
        // 设置最大空闲连接数为5
        poolConfig.setMaxIdle(5);
        // 设置最小空闲连接数为5
        poolConfig.setMinIdle(5);
        // 设置连接耗尽时是否阻塞, true代表阻塞, false代表抛出异常
        poolConfig.setBlockWhenExhausted(true);
        // 设置最大等待时间（毫秒）
        poolConfig.setMaxWaitMillis(2000);
        // 设置在获取连接时进行验证连接是否有效
        poolConfig.setTestOnBorrow(true);
        // 使用配置创建并初始化Jedis连接池
        jedisPool = new JedisPool(poolConfig,"hadoop101",6379,10000);
    }

    // 公开静态方法，提供获取Jedis客户端的功能
    public static Jedis getJedis(){
        // 如果连接池未初始化，则先初始化
        if(jedisPool == null){
            initJedisPool();
        }
        // 获取Jedis客户端
        return jedisPool.getResource();
    }

    // 主函数入口
    public static void main(String[] args) {
        // 通过getJedis()方法获取一个Jedis客户端实例
        Jedis jedis = getJedis();
        // 向Redis服务器发送ping命令并接收响应
        String pong = jedis.ping();
        // 输出响应结果
        System.out.println(pong);
    }


}
